Certain storage management operations can be complex and time-consuming processes. For example, end-to-end storage provisioning is typically a multi-step process that allocates storage capacity to a storage server by assigning space on physical storage devices to meet the user's need for storage capacity and requirements for performance, security, and efficiency. Storage provisioning involves steps such as the assignment of servers to appropriate storage media, specifying paths between the servers and storage devices, and zoning the network to ensure access by the appropriate servers.
Traditionally, software-based storage management tools have been used to carry out a specific sequence of operations for performing storage-related processes, such as provisioning. However, existing storage management tools are not easily customizable by a user to enable additional operations not already provided or to change a storage operation's workflow to suit specific needs of the user. While the operations carried out by some existing tools may be customized to meet a user's needs, the customization involves reading of program code to interpret the pre-established workflow sequence and manually modifying the code.
Further, existing storage management tools only automate storage-centric commands specific to a particular vendor's storage products. However, even common storage-centric workflows include commands associated with non-storage elements, such as servers, applications, virtualization layers, network elements, and internal information technology systems. Thus, existing storage management tools are not able to automate the entire end-to-end storage management process.